<?php
$options = get_option('dh_optimize_db');
//如果没有定义options就定义
if (!$options) {
	$interal = 3600*24*2; //定义一个礼拜执行一次
	//执行的时间按照第一次执行的时间为基础，因为无法精确，所以不定义具体执行的时间点
	$options = array($interal,time());//0:多长时间执行一次，以秒为单位。1:最后一次执行的日期
	update_option('dh_optimize_db', $options);	
}
 
//在主题被切换的时候，清除hook
function dh_theme_switch(){
	delete_option('dh_optimize_db');
}
 
add_action('switch_theme',dh_theme_switch);
 
$now = time(); // 现在
$last_check = $options[1];
$interal = $options[0];
$next_check = $last_check + $interal;
 
//如果到了时间执行的时间
if ($next_check <= $now) 
{
	//优化数据库
	global $wpdb;
  	$sql = 'SHOW TABLE STATUS FROM ' . DB_NAME . ' WHERE Data_free > 0';
	$res = $wpdb->get_results($sql);
	foreach($res as $r) 
	{
		$sql = 'OPTIMIZE TABLE '.$r->Name;
		$res2 = $wpdb->query($sql);
	}  	
	$options[1]=$now;
	update_option('dh_optimize_db', $options);
}
?>